1 군집화 실습

2016802036 권순찬

군집화(Clustering) 환경 설정

1.1 데이터 수집

데이터 설명


Obesity 데이터는 14 ~ 61세 사이의 중남미 국가 사람들의 다양한 식습관 및 신체 조건을 활용한 비만 수준 측정 데이터이다.
속성들은 다음을 의미한다.

데이터 전처리

범주형 변수 변환

NObey|esdad를 제외한 범주형 변수들을 모두 적절한 수치형으로 변환시켜 주었다.

결측치가 존재하는 지 확인 하였다.


전처리 2


군집화 분석에 들어가기 앞서 특정 변수를 선정하는 작업을 거쳤다.
비만의 경우 체중과 신장이 큰 영향을 지닌다는 사실을 인지하고 있기에 두 변수를 포함하였다.
또한, heatmap과 pairplot을 통해 상관도를 확인 후 나머지 변수를 선정하였다.

pairplot 결과는 출력값이 너무 커 범주처리 해두었다.

선정한 변수는 위와 같다.
군집화를 위해 다음 변수들을 포함하여 새롭게 데이터 프레임을 정의하였다.

총 3가지 형태의 df를 새로 정의하였고 각각 다음과 같은 과정을 통해 정규화를 진행하였다.

세 df를 하나로 묶었다.

1-3 군집화 분석

K-Means 알고리즘

먼저 K-Means 함수를 정의하였다.

산점도를 가시화 하는 함수도 정의한 후 K-Means 분석을 실행 하였다.

Num_init 값을 1로 설정한 후 K-Means 분석을 진행하였다.
Obesity_st1 같은 경우, k = 4 일 때,
Obesity_st2 같은 경우, k = 5 일 때,
Obesity_st3 같은 경우, k = 2 일 때,
Silhouette score가 가장 높은 것을 확인 할 수 있다.

Num_init 값을 10으로 설정한 후 K-Means 분석을 진행할 경우엔
Obesity_st1 같은 경우, k = 2 일 때,
Obesity_st2 같은 경우, k = 5 일 때,
Obesity_st3 같은 경우, k = 5 일 때,
Silhouette score가 가장 높은 것을 확인 할 수 있다.

마지막으로 K-Means++도 사용하여 군집 분석을 실행하였다.

Herarchical clustering

clustr의 개수가 5개 ~ 8개 일 때 거리가 눈에띄게 줄어드는 것처럼 보인다.

cluster의 개수를 8개로 leaf node를 생성해 보았다.

cluster의 개수를 증가시킨 후 HC 분석을 진행하고 가시화를 하였다.
Obesity_st1 같은 경우, k = 8 일 때,
Obesity_st2 같은 경우, k = 6 일 때,
Obesity_st3 같은 경우, k = 5 일 때,
Silhouette score가 가장 높은 것을 확인 할 수 있다.

DBSCAN clustering

최소 샘플수를 15, eps를 0.4로 했을 때 원하는 대로 군집이 이루어지지 않는 것을 알 수 있다.
가장 Silhouette score가 낮은 Obesity_st1 을 가지고 hyperparmeters를 튜닝해보았다.

Obesity_st1의 경우, Silhouette score는 eps가 0.7, 0.8 와 같이 높을 때 증가하지만
오히려 낮은 Silhouette score가 도출되게끔 hyper-parameter를 선정했을 시 기존 lable과 가장 비슷하게 군집되는 것을 알 수 있다.
원하는 best hyper-parameter를 찾지는 못했다.


1.3 군집 결과 분석 및 가시화


앞서 진행한 군집화 분석 결과를 다시 한번 살펴보며
실제 lable을 기준으로 평가해 보았다.

PCA 차원 축소 진행

차원축소를 진행하기 전 방법을 쉽게하기 위해 lable 값을 변환해주었다.

lable값이 feature에 포함되어지지 않게 2개의 주성분으로 차원축소를 진행하였다.

주성분 설명력을 출력한 결과
첫 주성분이 대략 94% 두번 째 주성분이 대략 5퍼의 분산 설명력을 가져
두 주성분이 총 약 99%를 설명하고 있다는 것을 알 수 있다.


PCA 차원 축소를 진행 후 시각화 하였다.
하지만 무슨 영문인지 중간 몇 가지 lable값을 인식하지 못하여 그래프로 표현하지 못하였다.
나머지 lable값을 통해 두 가지 주성분이 어느정도 알맞게 군집을 형성하고 있다는 것을 알 수 있다.